#ifndef PLACE_H_
#define PLACE_H_

#include <string>
#include <vector>
#include "namespaces.cpp"
#include "TransitionToPlace.h"
#include "PlaceToTransition.h"

class pn::Place
{
	public:
		Place();
		explicit		Place(const std::string&, unsigned int);
		virtual			~Place();
		std::string		getId();
		void			setId(const std::string&);
		unsigned int	getTokens();
		void			setTokens(unsigned int);
		unsigned int	addTokens(unsigned int);
		unsigned int	remTokens(unsigned int);
		void			addTransitionFrom(const pn::TransitionToPlace*);
		void			addTransitionTo(const pn::PlaceToTransition*);
	protected:
		std::string		mId;
		unsigned int	mTokens;
		std::vector<const pn::TransitionToPlace*> mTransitionsFrom;
		std::vector<const pn::PlaceToTransition*> mTransitionsTo;
};

#endif /*PLACE_H_*/
